package com.neuedu.tools;

import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTestDriver {
    public static void main(String[] args) {
       // test01();
       // test02();
        test05();
    }


    private static void test03(){
        //创建一个StringBuilder的实例对象
        StringBuilder sb=new StringBuilder();
        //动态拼接字符串
        sb.append("Hello!");
        sb.append("小明,").append("吃饭了吗？");
        System.out.println("字符串内容："+sb);
        StringBuilder sb2=sb.reverse();
        System.out.println("Reverse::"+sb2);

        /**
         * String replace方法
         * String按值传参
         */
        String stuName ="夏明";
        System.out.println("主方法中实参传递之前的值："+stuName);
        test03sub(stuName);
        System.out.println("主方法中实参传递之后的值："+stuName);

        /**
         * 相关概念：
         * 实参：函数调用时所传递的参数是实参；
         * 形参：函数定义时写在（）中的参数是形参；
         *
         * 按值传参：实参的值传递给形参，形参改变不会影响实参；
         *      8种基本数据类型及其包装类、String
         * 按址传参：实参的地址传递给形参，形参改变会影响实参；
         *      除了String之外的所有对象类型，包括数组；
         *
         */

    }

    /**
     * String replace方法
     * String按值传参
     */
    /**
     *
     * @param stuName 形参（此处函数定义
     */
    private static void test03sub(String stuName){
        System.out.println("子方法中修改之前的值："+stuName);
        stuName +="lalala";
        System.out.println("子方法中修改之后的值："+stuName);
    }


    /**
     * 字符串存储模型，补充内容
     */



    /**
     * 数学工具类
     */

    private static void test02(){
        double va10=3.14;
        System.out.println("ceil::"+Math.ceil(va10));
        System.out.println("floor::"+Math.floor(va10));
    }


    /***
     * 将字符串类型的日期转换为指定格式日期对象
     * @param strDate  字符串类型的日期
     * @param pattern  字符串的格式
     * @return  日期对象
     */
    private static Date convertString2Date(String strDate,String pattern){
        //返回值：默认值为null
        Date date=null;
        if (pattern==null){
            //给定一个默认的转换格式
            pattern="yyyy-MM-dd HH:mm:ss";
        }


        //创建一个日期格式转换的工具类SDF的实例对象
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
        //进行转换
        try {
            date=simpleDateFormat.parse(strDate);
        }catch (Exception e){
            //如果发生异常，此处进行异常的日志记录
            System.out.println("日期转换发生了问题！");
        }

        return date;
    }

    /***
     * 将日期对象的日期转换为指定格式的日期字符串
     * @param date  被转换的日期对象
     * @param pattern  字符串的转换格式
     * @return  指定格式的日期字符串
     */
    private static String convertDate2String(Date date, String pattern){
        //返回值：默认值为""
        String strDate="";
        if (pattern==null){
            //给定一个默认的转换格式
            pattern="yyyy-MM-dd HH:mm:ss";
        }


        //创建一个日期格式转换的工具类SDF的实例对象
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat(pattern);
        //进行转换
        strDate=simpleDateFormat.format(date);


        return strDate;
    }

    /**
     * String工具类： MessageFormat
     */

    private static void test05(){
        //创建类MessageFormat类的一个实例对象
        //带占位的格式

        String strFormat="我是{0}，来自{1}，稀罕{2}";
        MessageFormat mf=new MessageFormat(strFormat);
        //占位符需要替换的参数数组（以数组的形式提供可以替换的参数）
        Object[] paras = new Object[]{"小明","山西","写代码"};
        String strMessage = mf.format(paras);
        System.out.println(strMessage);
    }


    /**
     * String工具类： 日期类应用
     */

    private static void test04(){
        Date date0=new Date();
        Calendar calendar0=Calendar.getInstance();
        calendar0.set(2017,2,14);
//      "2017-02-14"转换为日期类型
        System.out.println("2017-02-14的信息："+calendar0.getTime().toString());

        System.out.println("---------------------");
        String strDate="2017-02-14 14:25:35";
        Date date1=convertString2Date(strDate,null);
        System.out.println("转换之后的日期："+convertDate2String(date1,"yy年MM月dd号 HH小时mm分钟ss秒"));
        System.out.println(convertDate2String(new Date(),"今天是yyyy年中的第w周，是这一年的第D天"));
    }


    /**
     * 日期对象工具类
     */

    private static void test01(){
        //date类
        Date date0 = new Date();
        System.out.println("date::"+date0);

        //calender类
        Calendar calendar=Calendar.getInstance();
        Date date1=calendar.getTime();
        System.out.println("Calender::"+date1);

        System.out.println("当前是几点：是"+calendar.get(Calendar.HOUR)+"点");
        //Calendar的月份从0-11月，表示1-12月，其他参数从1开始
        System.out.println("当前是几月：是"+calendar.get(Calendar.MONTH)+"月");

    }

}
